package model

import (
	"gorm.io/gorm"
	"time"
)

type DataBox struct {
	ID          int64  `json:"id" gorm:"id"`
	FtpInfoId   int64  `json:"ftp_info_id" gorm:"ftp_info_id"`     // ftp_info_id
	Date        string `json:"date" gorm:"date"`                   // 日期
	Time        string `json:"time" gorm:"time"`                   // 时间
	LogTime     int64  `json:"log_time" gorm:"log_time"`           // log_time
	SteamId     string `json:"steam_id" gorm:"steam_id"`           // 时间
	GameId      int64  `json:"game_id" gorm:"game_id"`             // 游戏id
	GameName    string `json:"game_name" gorm:"game_name"`         // 游戏名称
	Type        string `json:"type" gorm:"type"`                   // 指令类型
	BoxId       string `json:"box_id" gorm:"box_id"`               // 汽车id
	NewSteamId  string `json:"new_steam_id" gorm:"new_steam_id"`   // 时间
	NewGameId   int64  `json:"new_game_id" gorm:"new_game_id"`     // 游戏id
	NewGameName string `json:"new_game_name" gorm:"new_game_name"` // 游戏名称
	Location    string `json:"location" gorm:"location"`           // 地址
	UpdatedAt   int64  `json:"updated_at" gorm:"updated_at"`       // 修改时间
	CreatedAt   int64  `json:"created_at" gorm:"created_at"`       // 添加时间
}

func (DataBox) TableName() string {
	return "sm_data_box"
}

func (u DataBox) BeforeUpdate(tx *gorm.DB) (err error) {
	now := time.Now()
	unixTime := now.Unix()
	u.UpdatedAt = unixTime
	u.CreatedAt = unixTime
	return nil
}

type DataBoxM struct {
	DB *gorm.DB
}

func NewDataBoxM() *DataBoxM {
	return &DataBoxM{
		GetDB(),
	}
}

func (c *DataBoxM) InsertDataBox(DataArr []DataBox) bool {

	result := c.DB.Omit("id").CreateInBatches(DataArr, 1000)

	if result.Error != nil {
		panic(result.Error)
	}
	return true
}
